
public class PointedHexBoard<T> extends Board<T> {
    
    // These must line up with the indices of sNeighbors !!
    public static final int EAST            = 0;
    public static final int NORTHEAST       = 1;
    public static final int NORTHWEST       = 2;
    public static final int WEST            = 3;
    public static final int SOUTHWEST       = 4;
    public static final int SOUTHEAST       = 5;
    
    // The indices of this array must line up with the directions !!
    private static final int[][] sNeighbors = {
            { 1,  0},       // EAST = 0
            { 1, -1},       // NORTHEAST = 1
            { 0, -1},       // NORTHWEST = 2
            {-1,  0},       // WEST = 3
            {-1,  1},       // SOUTHWEST = 4
            { 0,  1}        // SOUTHEAST = 5
    };
    
    public PointedHexBoard(int[][] map) {
        super(map);
    }

    int[] getNeighborCoordinates(int[] from, int direction) {
        int[] delta = sNeighbors[direction];
        
        return new int[] { from[0] + delta[0], from[1] + delta[1] };
    }
}
